💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    02 라우트 생성 및 HTTP 메서드 이해 | ✅ 편저: 코담 운영자

    2강: FastAPI 라우트 생성 및 HTTP 메서드 이해

    🔗 소스


    🌐 HTTP 메서드란?

    FastAPI에서는 아래와 같은 HTTP 메서드를 사용해 API 요청의 목적을 구분합니다:

    메서드 설명
    GET 데이터를 조회 (읽기 전용)
    POST 새로운 데이터 생성 (예: 폼 제출, DB 추가)
    PUT 기존 데이터 수정 (전체 또는 일부)
    DELETE 데이터 삭제

    각 메서드를 적절히 사용하면 API의 명확성과 효율성이 높아집니다.


    🛠️ FastAPI 라우트 예제

    1. GET 요청 (데이터 조회)

    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    def read_root():
        return {"message": "Welcome to FastAPI!"}
    
    • 루트 경로(/)에 GET 요청이 오면 환영 메시지를 반환

    실행 방법

    uvicorn main:app --reload
    

    2. POST 요청 (데이터 생성)

    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.post("/items/")
    def create_item(name: str, price: float):
        return {"name": name, "price": price}
    
    • /items/ 경로에 POST 요청 시 name과 price를 받아 JSON 응답 반환
    • FastAPI는 타입 힌트를 바탕으로 자동 유효성 검사 수행

    📌 테스트 방법

    1. Swagger UI 접속 (/docs)
    2. /items/ POST 항목 선택 → 예시 데이터 입력 → 실행

    3. PUT 요청 (데이터 수정)

    @app.put("/items/{item_id}")
    def update_item(item_id: int, price: float):
        return {"item_id": item_id, "new_price": price}
    
    • item_id를 경로 매개변수로 받아 해당 항목의 가격을 수정
    • 경로: /items/1, 요청 body: price

    4. DELETE 요청 (데이터 삭제)

    @app.delete("/items/{item_id}")
    def delete_item(item_id: int):
        return {"message": f"Item {item_id} deleted."}
    
    • item_id에 해당하는 항목을 삭제 (예제에서는 실제 DB 삭제는 생략)
    • 삭제 확인 메시지 반환

    ✅ 요약

    • FastAPI는 각 HTTP 메서드를 데코레이터로 간단히 선언 가능
    • Swagger 문서를 통해 브라우저에서 직접 API 테스트 가능
    • GET, POST, PUT, DELETE를 통해 CRUD 구조를 명확하게 구성 가능

    다음 강의에서는 경로 매개변수와 쿼리 매개변수를 활용한 유연한 API 설계 방법을 알아봅니다.

    📌 참고: 본 강의는 FastAPI 학습 시리즈 기반으로 제작되었습니다.

    TOP
    preload preload